home *** CD-ROM | disk | FTP | other *** search
/ Alde ADA 5 #1 / ADA CD-ROM - Alde Publishing.iso / tools / prp.rpt < prev    next >
Encoding:
Text File  |  1988-05-03  |  11.1 KB  |  186 lines

  1.            Ambient RF Propagation for Communications in Ada
  2.                       Contract N66001-85-C-0042
  3.                               Final Report
  4.                              1 October 1985
  5.  
  6.                             IWG Corporation
  7.          975 Hornblend St., Suite C, San Diego, CA 92109
  8.  
  9.  
  10. OVERVIEW
  11.      The conversion of the SIMSTAR ambient RF propagation routines to 
  12. Ada has been completed.  The Source code (CDRL A001), the executable 
  13. code (CDRL A005), and the users manual (CDRL A003) resident on the NOSC 
  14. TECR in directory [CONTR41.PROPLINK].  This final report contains 
  15. additional information concerning PROPLINK and a discussion of the 
  16. problems encountered and lessons learned during this project (CDRL 
  17. A002).  New features should be considered for future additions.
  18.  
  19. PRODUCT DELIVERY
  20.      Proplink is a stand-alone RF propagation prediction program which 
  21. allows easy use of the SIMSTAR RF propagation routines through an 
  22. interactive front-end processor.  It allows the user to describe a 
  23. complex network of links by node, receiver, and transmitter 
  24. descriptions.  The signal and noise at each receiver is calculated using 
  25. one of the five propagation modules: ELF, VLF, LF, MF/HF, and 
  26. VHF/UHF/SHF/EHF.   Detailed instructions are given in the user's manual 
  27. which can be found in the file PROPLINK.DOC in the directory [CONTR41].  
  28. World read access as been given for this file.  The User's manual 
  29. includes a sample PROPLINK session and a Package "Withing" Map.  The 
  30. source code (.TXT) and executable code (.SYM) can be found in 101 files 
  31. in directory [CONTR41.PROPLINK].  The code has been compiled under 
  32. Telesoft Ada 1.5 and will execute with the command TRUN PROPLINK.  Also 
  33. included on the directory are four seasons of Noise data and several 
  34. sample data sets: ELFTEST.DAT, VLFTEST.DAT, LFTESTD.DAT, LFTESTN.DAT, 
  35. HFTEST.DAT, and VHFTEST.DAT.  These test data sets have been run on both 
  36. the FORTRAN version and this Ada version of PROPLINK to verify the 
  37. accuracy of the Ada version.  It should be noted that PROPLINK includes 
  38. several useful packages in addition to the propagation routines.   
  39. ENTITYUTI provides useful utilities for parsing an input string, and 
  40. storing alphanumerics as integers.  COMPLEX is a complex number package.  
  41. IOANDFILE contains some generic file handling utilities.  NODELOC does 
  42. great circle geometric interpolation and extrapolation.  It is hoped 
  43. that these routines can be used in other Ada software.
  44.      The product is competitive with current FORTRAN simulation 
  45. capabilities.  In view of the current state of Ada, the product may be 
  46. years in advance of the user community.  Once Ada embedded systems 
  47. software becomes more prevalent, PROPLINK should realize its potential 
  48. in the Ada community.  In particular, it could be used to design, test 
  49. and simulate any system performance where hardware communications is an 
  50. issue with the potential for dramatic cost savings.   
  51.  
  52. PROBLEMS ENCOUNTERED AND LESSONS LEARNED.
  53.      At the outset of this project, we knew little Ada and had no 
  54. experience with an Ada compiler.  The problems we had and their 
  55. solutions should be of interest to future users. 
  56.      The greatest difficulties were related to the currently available 
  57. Telesoft compilers 1.5 and 2.1.  We started out with 2.1 assuming that 
  58. the newer version would be better for program development.  One NOSC 
  59. employee said that he always uses 2.1 now that it was available.  After 
  60. a week of extremely long compilation times (over an hour of CPU for 1000 
  61. lines of code) we turned to 1.5.  When Colonel Whitaker heard about our 
  62. switch to 1.5, he said that he wasn't surprised since no one has ever 
  63. attempted program development on 2.1.  It would have been nice to know 
  64. that earlier.  
  65.      But even 1.5 was slower than we had ever imagined.  This is largely 
  66. due to the heavy usage of the NOSC TECR.  At night, the compilation 
  67. times are not unreasonable.  Every attempt was made to compile at night, 
  68. although a reoccuring back end error precluded reliable use of batch 
  69. compilation.  Therefore, some daytime compilation could not be avoided.  
  70. During the final day of the project (the last full compilation) the 
  71. slowing of the computer drew the operator's attention.  Rather than 
  72. simply sending me a message to refrain from further compilation, she 
  73. just reduced the account's priority.  Fortunately, this blow took place 
  74. at the end of the project.  Future users should be warned that night 
  75. work is required and that day compilations should be held to an absolute 
  76. minimum lest you raise the operator's wrath.
  77.      Another factor in the compilation time was the size of the 
  78. packages.  Many of them are over 1000 lines long.  The packages were 
  79. designed to group the subprograms logically by function.  
  80. Unfortunately, they were large.  Perhaps future users might consider 
  81. smaller packages to start with the intention of repackaging at the end 
  82. once compiler errors are fixed.  The time saved during compilation 
  83. would more than make up for the time it would take to repackage,
  84.      Some major deficiencies in the 1.5 facility affected the progress 
  85. of the project.  First, the lack of a Mathlib was caused some delay 
  86. before one was located through Bruno Witti at NOSC.  He had recieved it 
  87. from Colonel Whitaker some time earlier.  The availability of that 
  88. package (and other utilities) should be made clear to future uses at the 
  89. outset, not when they need them.  The mathlib did not include the 
  90. complex number functions which are available in FORTRAN.  Therefore it 
  91. was necessary to write and test a complex number package.  It is hoped 
  92. that this package will find its way into an Ada library so that other 
  93. users can benefit from it.
  94.      Second, the lack of a symbolic debugger was a great hindrance 
  95. during the final debugging stage.  Early on (January) we were told that 
  96. the TECR would have the DEC Ada compiler, which has a debugger, 
  97. available as soon as they went to VMS 4.2.  The estimated date for this 
  98. was said to be May at the latest.  As of the writing of this final 
  99. report, the TECR is still under 3.7 and no debugger is available.  
  100. Therefore, the archaic methodology of inserting Put statements into the 
  101. code and recompiling the package was used to clean PROPLINK.  It was 
  102. found that this technique was at least five times slower than it took to 
  103. check the same variables with the FORTRAN debugger.  It is hoped that 
  104. future users will get the benefits of an Ada debugger. 
  105.      Finally, a library utility would be helpful.  The fact that the 
  106. final directory has 101 files in it is evidence enough of this need.
  107.      Turning to the conversion process, the serial approach used in this 
  108. project had benefits and drawbacks.  In this approach, one person did a 
  109. quick and dirty conversion from FORTRAN to Ada and the other 
  110. concentrated on compiling, debugging, cleaning, refining and, basically, 
  111. making it work. The primary advantage to this approach was that each 
  112. person got very good at their task.  In both cases a two or three fold 
  113. improvement in effiency was seen.  The only disadvantage was a disparity 
  114. in the relative hours that each job took.  While the initial conversion 
  115. took 10% longer than originally estimated, the cleaning task took almost 
  116. 30% longer than expected largely due to the problems described above.
  117.      Qualitatively, the serial approach impacted the final result in 
  118. that some Ada features were not used to their full advantage.  By 
  119. converting the FORTRAN line by line to Ada, we missed the chance to make 
  120. some sweeping changes to the way data was handled in the program.  In 
  121. particular, better use of record types could have been employed if they 
  122. had been designed prior to any conversion. In future projects, I would 
  123. recommend that the programmers study the variables to determine whether 
  124. advanced Ada types could be employed.
  125.      The FORTRAN version of PROPLINK is not well structure at the 
  126. subroutine level; "spaghetti code" abounds.  There is heavy reliance on 
  127. GOTOs.  At the outset, it was thought that this would be a major problem 
  128. for conversion.  In fact, while difficult at times, it did not cause the 
  129. errors we had expected.  Therefore, future users are encouraged to 
  130. replace as much "spaghetti code" as possible and strive for "structured 
  131. programs".   
  132.      The most difficult aspect of the conversion was the replacement of 
  133. FORTRAN common blocks with several packages which are "withed" by many 
  134. other packages.  A major effort was made to reduce the number of 
  135. variables that were passed between subprograms are parameters.  The 
  136. problems occurred because the original FORTRAN used the same name for 
  137. different variables, different names for the same variables, and the 
  138. same name for the same variable in different units (e.g. FREQ is used 
  139. for hertz, kilohertz, megahertz, etc.).  Other problems included 
  140. incorrectly determining the proper mode of a formal parameter and 
  141. redeclaring a variable inside a procedure which was declared in a withed 
  142. package.  The result in both cases was the called procedure did not have 
  143. the proper value for the variable.  Perhaps the most bizarre problem of 
  144. this kind involved a FORTRAN subroutine which dimensioned an array but 
  145. did not initialize it.  In the Ada version, the array was declared 
  146. inside the procedure.  In fact, with each call of the FORTRAN 
  147. subroutine, the previous values were retained; the Ada declaration 
  148. effectively zeroed the array with each call.  The problem was solved by 
  149. moving the Ada declaration to the top of the package body.  Once 
  150. compiled, the majority of the remaining bugs were due to problems with 
  151. passing data between packages and subprograms.  Future users should be 
  152. cautious with passed data via calling parameters or withed packages. 
  153.      Overall, the project was very worthwhile, particularly in that it 
  154. resulted in an Ada capability at a small business that would not have 
  155. been achieved by any other means.  The advice, assistance, and 
  156. cooperation of the program managers and NOSC personnel was invaluable to 
  157. the success of this project and is greatly appreciated.  
  158.            
  159. FUTURE EFFORTS
  160.      Concurrent with this conversion, several additions and 
  161. modifications have been made to the FORTRAN version of PROPLINK.  Its 
  162. increasing use as a companion tool with SIMSTAR has brought out the need 
  163. for several new features.  These include:
  164.  
  165. 1)  Increased flexiblity and user-friendliness of the front-end,
  166. 2)  Output of signal-to-noise ratios and the ability to define a
  167.     threshold S/N.
  168. 3)  Knife-edge propagation for VHF
  169. 4)  Tropospheric propagation of VHF
  170. 5)  Meteor Burst propagation
  171. 6)  Laser links
  172.  
  173.      Some of these have already been included in the FORTRAN version; 
  174. all can be included into the new Ada version.  As Ada users of Proplink 
  175. expand, these new features will be very useful.  The conversion of 
  176. SIMSTAR to Ada is a major effort which requires a complete re-design to 
  177. correct the many existing deficiencies of the FORTRAN and to take 
  178. advantage of Ada's advanced capabilities. 
  179.   
  180. ec. Whitaker, Courtwright, Loper, Schill
  181. cc. Gratt, Becker, Perry, Conrad
  182.  
  183.  
  184.       
  185.   
  186.